package santeclair.referentiel.optique.referentiel.dao.impl;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;

import santeclair.lunar.framework.dao.jpa.impl.FwkCodeJpaDAO;
import santeclair.referentiel.optique.config.Constant;
import santeclair.referentiel.optique.model.TraitementVerre;
import santeclair.referentiel.optique.referentiel.dao.TraitementVerreDAO;

@Repository
public class TraitementVerreDAOImpl extends FwkCodeJpaDAO<TraitementVerre, String> implements TraitementVerreDAO {

    @PersistenceContext(unitName = Constant.PERSISTENCE_UNIT_NAME)
    private EntityManager em;

    @Override
    public Class<TraitementVerre> getEntityClass() {
        return TraitementVerre.class;
    }

    @Override
    public EntityManager getEntityManager() {
        return em;
    }

    public TraitementVerre getByTypeTraitement(String codeTraitementVerre) {
        StringBuffer sbf = new StringBuffer();

        sbf.append("SELECT traitementverre ");
        sbf.append("FROM  TraitementVerre traitementverre ");
        sbf.append("   JOIN FETCH traitementverre.typeTraitementVerre typetraitement ");
        sbf.append("WHERE traitementverre.codeTraitementVerre = :codeTraitementVerre");

        TypedQuery<TraitementVerre> query = em.createQuery(sbf.toString(), TraitementVerre.class);
        query.setParameter("codeTraitementVerre", codeTraitementVerre);
        return query.getSingleResult();
    }
}
